package GUI;

import Enumeration.EnumGUIStatus;
import GUI.Controls.SpielerAnzeige;
import GUI.Interface.IGUI;
import GUI.Interface.IGUIAktionsFeld;
import GUI.Interface.IGUIControl;
import Monopoly.Spieler;
import Monopoly.Spielleiter;
import X.ISpielInstance;

/**
 * 
 * Klasse zum Steuern von {@link GUI}
 * 
 * @author 
 *
 *@version $Revision: 0.0$
 *
 */
public class GUIControl implements IGUIControl {

	private IGUI m_Spielfeld;
	private Spielleiter m_Spielleiter;
	private ISpielInstance m_Instance;

	public GUIControl(ISpielInstance instance){
		m_Spielfeld = new GUI(instance.SpielerAktion(),instance.Spielleiter().Spieler());
		m_Spielleiter = instance.Spielleiter();
		m_Instance = instance;
	}
	
	public void ShowGui() {
		m_Spielfeld.Show();
	}

	public void SetzeStatus(EnumGUIStatus Status) {
		IGUIAktionsFeld res = m_Spielfeld.GetAktionsFeld();
		switch(Status){
		case Start :
			res.SetBank(false);
			res.SetHandeln(false);
			res.SetWuerfeln(true);
			res.SetRundeBeenden(false);
			res.SetzeAktuellenSpieler(m_Spielleiter.AktuellerSpieler());
			break;
		case InGame : 
			res.SetBank(true);
			res.SetHandeln(true);
			res.SetWuerfeln(false);	//was wenn Pasch und nicht im gefaengnis?
			res.SetRundeBeenden(true);
			break;
		case Gesperrt :
			res.SetBank(false);
			res.SetHandeln(false);
			res.SetWuerfeln(false);
			res.SetRundeBeenden(false);
			break;
		default : //Fehler
		}
	}

	public void Aktualisieren() {
		for(SpielerAnzeige res : m_Spielfeld.GetSpielerAnzeige().GetPlayers()){
			Spieler player = m_Spielleiter.Spieler().GetValue(res.PlayerID());
			res.SetMoney(player.Geld.GetBetrag());
		}
		m_Spielfeld.GetSpielfeld().Aktualisieren(m_Instance);
	}

}
